package com.secondmybatis.contorller;

import com.secondmybatis.entity.Emp;
import com.secondmybatis.entity.EmpQueryParam;
import com.secondmybatis.entity.PageBean;
import com.secondmybatis.entity.Result;
import com.secondmybatis.service.EmpService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;

import java.util.List;

@RestController
public class EmpController {
    @Autowired
    private EmpService empService;


    /**
     * 未附带条件的分页查询
     */
//    @GetMapping("/empts")
//    public Result page(
//            @RequestParam(defaultValue = "1") Integer page,
//            @RequestParam(defaultValue = "10") Integer pageSize
//    ) {
//        PageBean pageBean = empService.page(page, pageSize);
//        System.out.println("page:" + page + "pageSize:" + pageSize);
//        return Result.success(pageBean);
//    }

    /**
     * 附带条件的分页查询->参数较少时
     */
//    @GetMapping("/empts")
//    public Result page(
//            String name,Integer gender,
////            @DateTimeFormat(pattern = "yyyy-MM-dd") LocalDateTime begin,
//            @RequestParam(defaultValue = "1") Integer page,
//            @RequestParam(defaultValue = "10") Integer pageSize
//    ) {
//        PageBean pageBean = empService.page(page, pageSize,name,gender);
//        System.out.println("page:" + page + "pageSize:" + pageSize);
//        return Result.success(pageBean);
//    }

    /**
     * 附带条件的分页查询->参数较多时
     */
    @GetMapping("/empts")
    public Result page(
            EmpQueryParam empParam
    ) {
        PageBean pageBean = empService.page(empParam);
        System.out.println("page:" + empParam.getPage() + "pageSize:" + empParam.getPageSize());
        return Result.success(pageBean);
    }

    /**
     * 新增员工
     * @param emp
     * @return
     */
    @PostMapping("/empts")
    public Result add(
            @RequestBody Emp emp
    ) {
        empService.save(emp);
        return Result.success();
    }

    /**
     * 批量删除员工(第一种接收参数数组方式)
     * @param ids
     * @return
     */
//    @DeleteMapping("/emps")
//    public Result delete(Integer[] ids){
//        empService.delete(ids);
//        return Result.success();
//    }

    /**
     * 批量删除员工（第二种接收参数数组方式->更优）
     * @param ids
     * @return
     */
    @DeleteMapping("/empts")
    public Result delete(@RequestParam List<Integer> ids){
        empService.delete(ids);
        return Result.success();
    }

    /**
     * 修改员工基本信息回显
     * @param id
     * @return
     */
    @GetMapping("/empts/{id}")
    public Result getById(@PathVariable Integer id){
        Emp emp = empService.getById(id);
        return Result.success(emp);
    }

    /**
     * 修改员工信息
     * @param emp
     * @return
     */
    @PutMapping("/empts")
    public Result update(@RequestBody Emp emp){
        empService.update(emp);
        return Result.success();
    }
}
